#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <string>
#include <climits>
using namespace std;
#define MAXN 10000
int maxW[MAXN], minW[MAXN], sz[MAXN], cnt[MAXN];
int de[MAXN];
int ham[MAXN];
list<int> start[MAXN];
int main()
{
    fill(de, de+MAXN, 0);
    int C, L;
    cin >> C >> L;
    for(int i=0; i<C; ++i)
    {
        cin >> minW[i];
        cin >> maxW[i];
        start[maxW[i]].push_back(minW[i]);
    }
    for (int i=0; i<L; ++i)
    {
        cin >> sz[i];
        cin >> cnt[i];
        ham[sz[i]] = cnt[i];
    }

    for(int i=0; i<C; ++i)
    {
        int a = minW[i], b = maxW[i];
        do
        {
            de[a]++;
            a++;
        }
        while(a<=b)
        }

    int ans = 0;
    for(int i=0; i<L; ++i)
    {
        int minn = min_element(de, de+MAXN);
        if (ham[minn] == 0)
            de[minn] = INT_MAX;
        else
        {
            if (de[minn]<=ham[minn])
            {
                ans += de[minn];
                for (int j=0; j<de[minn]; ++j)
                {
                    start[maxW[i]].pop_back();
                }
                de[minn] = INT_MAX;
            }
            else
            {
                ans += ham[minn];
                for (int j=0; j<ham[minn]; ++j)
                {
                    start[maxW[i]].pop_back();
                }
            }
        }
    }
    return 0;
}


